libobs_wrapper\data\properties\types/
button.rs1use getters0::Getters;
2
3use crate::{
4 data::properties::{get_enum, get_opt_str, macros::unsafe_is_of_type_result, ObsButtonType},
5 run_with_obs,
6};
7
8use super::PropertyCreationInfo;
9
10#[derive(Debug, Getters, Clone)]
11#[skip_new]
12pub struct ObsButtonProperty {
13 name: String,
14 description: Option<String>,
15 button_type: ObsButtonType,
16 url: Option<String>,
17}
18
19impl TryFrom<PropertyCreationInfo> for ObsButtonProperty {
20 type Error = crate::utils::ObsError;
21
22 fn try_from(
23 PropertyCreationInfo {
24 name,
25 description,
26 pointer,
27 runtime,
28 }: PropertyCreationInfo,
29 ) -> Result<Self, Self::Error> {
30 run_with_obs!(runtime, (pointer), move || {
31 unsafe_is_of_type_result!(Button, pointer)?;
32
33 let url = unsafe {
34 get_opt_str!(pointer, button_url)
36 };
37 let button_type = get_enum!(pointer, button_type, ObsButtonType)?;
38
39 Ok(Self {
40 name,
41 description,
42 button_type,
43 url,
44 })
45 })?
46 }
47}